"""
需求：
    定义生成器函数，在员工列表中查找所有部门是9001的员工
    定义生成器函数： 在员工列表中查找所有姓名是2个字的员工
    要求：lambda表达式实现
"""

class Employee:
    def __init__(self,eid,name,did,salary):
        self.eid=eid # 员工编号
        self.name=name
        self.did=did  # 部门编号
        self.salary=salary

    def __repr__(self):
        return f'Employee(eid={self.eid},name={self.name},did={self.did},salary={self.salary})'

employees = [
    Employee(1001,'茹凤',9002,16000),
    Employee(1002,'韩耀祖',9001,19000),
    Employee(1003,'谭新宇',9003,20000),
    Employee(1004,'千琪',9004,30000),
    Employee(1005,'李欣桐',9001,40000),

]

# 1. 定义高阶函数
def find_all(condition):
    for emp in employees:
        if condition(emp):
            yield emp


# 2. 将Lambda表达式作为参数传递给高阶函数  在员工列表中查找所有部门是9001的员工
for emp in find_all(lambda emp: emp.did == 9001):
    print(emp)

print('=' * 30)

# 在员工列表中查找所有姓名是2个字的员工
for emp in find_all(lambda emp: len(emp.name) == 2):
    print(emp)